package com.example.forum.common.utils;


import org.springframework.util.DigestUtils;

/**
 * @author hanzishuai
 * @date 2025/3/22 12:18
 * @Description 用于 MD5 加密的工具类
 */
public class MD5Util {


    /**
     * Created by hanzishuai on 2025/3/22
     *
     * @param str 要进行 MD5 加密的字符串
     * @return java.lang.String
     * @Description 传入原字符串后得到一个经过 MD5 加密的字符串
     */
    static public String md5(String str) {
        return DigestUtils.md5DigestAsHex(str.getBytes());
    }

    /**
     * Created by hanzishuai on 2025/3/22
     *
     * @param str  要加密的字符串
     * @param salt 盐
     * @return java.lang.String
     * @Description 给密码加密
     */
    public static String md5Salt(String str, String salt) {
        return md5(md5(str) + salt);
    }

    /**
     * Created by hanzishuai on 2025/3/22
     *
     * @param rawPassword    要进行验证的密码
     * @param salt           盐
     * @param hashedPassword 数据库中存储的密码
     * @return boolean
     * @Description 验证密码
     */
    public static boolean verifyPassword(String rawPassword, String salt, String hashedPassword) {
        String encryptPassword = MD5Util.md5Salt(rawPassword, salt);
        return encryptPassword.equalsIgnoreCase(hashedPassword);
    }


}
